SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE proc [dbo].[SP_TDCONC_BANC_I01]  
/*------------------------------------------------------*/  
/*---- Empresa           : OFISIS S.A.              ----*/  
/*---- Cliente           : OFISIS S.A.              ----*/  
/*---- Sistema           : Tesoreria                ----*/  
/*---- Modulo            : Empresa                  ----*/  
/*---- Programa          : Valida goo CONC_BANCAR.----*/  
/*---- Script            : TDCONC_BANC              ----*/  
/*---- Nombre SP         : SP_TDCONC_BANC_I01       ----*/  
/*---- Desarrollado por  : Ernesto G½mez Torres     ----*/  
/*---- Fecha Creaci½n    : 21/03/2002               ----*/  
/*---- Base de Datos     : Microsoft Sql Server     ----*/  
/*---- Version           : 7.0                      ----*/  
/*---- Invoca a SP       :                          ----*/  
/*------------------------------------------------------*/  
/*------------------------------------------------------*/  
/*---- Modificado 1 por     :                       ----*/  
/*---- Fecha Modificacion   :                       ----*/  
/*---- Detalle Modificacion :                       ----*/  
/*----                                              ----*/  
/*------------------------------------------------------*/  
/*------------------------------------------------------*/  
/*---- Comentarios:                                 ----*/  
/*----                                              ----*/  
/*------------------------------------------------------*/  
/*------------------------------------------------------*/  
/*---- Drop Proc SP_TDCONC_BANC_I01                 ----*/  
/*---- Grant All On SP_TDCONC_BANC_I01 to PUBLIC    ----*/  
/*---- SP_TDCONC_BANC_I01  '01','OFISIS'            ----*/  
/*------------------------------------------------------*/  
  
@ISCO_EMPR        TD_VC_002,  
@ISCO_USUA        TD_VC_008  
 As  
Declare  
--------- Variables de Cursor 1----------  
@CSDE_LINE_CURS   VARCHAR(200),  
--------- Variables de Cursor 2----------  
@CSCO_EMPR_BANC   TD_VC_002,  
@CSNU_ANNO_CONC   TD_VC_004,  
@CSNU_PERI_CONC   TD_VC_002,  
@CSCO_BANC        TD_VC_003,  
@CSNU_CNTA_BANC   TD_VC_020,  
@CSAA_BNCO        TD_VC_004,  
@CSMM_BNCO        TD_VC_002,  
@CSFE_OPER        TD_VC_010,  
@CSCO_TIPO_DOCU   TD_VC_003,  
@CSCO_SUNA   TD_VC_003,  
@CSNU_DOCU_BANC   TD_VC_020,  
@CSTI_MOVI_BANC   TD_VC_001,  
@CSIM_MOVI        TD_VC_020,  
@CSDE_OBSE   TD_VC_100,  
  
--------- Variables de Trabajo----------  
@VNCO_BANC        TD_IN_001,  
@VSCO_BANC        TD_VC_003,  
@VNNU_CNTA_BANC   TD_IN_001,  
@VSNU_CNTA_BANC   TD_VC_020,  
@VNNU_CNTA_0001   TD_IN_001,  
@VSNU_CNTA_ANTE   TD_VC_020,  
@VSNU_CNTA_ACTU   TD_VC_020,  
@VSTI_DOCU        TD_VC_003,  
@VNCA_TOTA        TD_IN_001,  
@VNCA_ERRO        TD_IN_001,  
@VSDE_OBSE_ERRO   TD_VC_080,  
@VSTI_SITU        TD_VC_003,  
@VSDE_LINE_0001   TD_VC_100,  
@VSCO_USUA        TD_VC_008,  
@VNNU_FILA        TD_IN_001,  
@VSDE_CADE        TD_VC_100  
  
    DELETE FROM #TWMOVI_BANC_0003  
    DELETE FROM #TWMOVI_BANC  
    DELETE FROM #TWMOVI_ERRO  
  
    Select @VSNU_CNTA_ANTE = NULL  
    Select @VSNU_CNTA_ACTU = NULL  
  
    Declare CU_TDCONC_BANC_I01_1 Cursor For  
    Select  DE_LINE FROM #TWMOVI_BANC_0001  
  
    Open   CU_TDCONC_BANC_I01_1  Fetch  CU_TDCONC_BANC_I01_1 into @CSDE_LINE_CURS  
  
    While @@Fetch_Status = 0    
    Begin   

      Insert into #TWMOVI_BANC  
         (CO_EMPR, NU_ANNO, NU_PERI, CO_BANC, NU_CNTA_BANC, AA_BNCO, MM_BNCO,  
                 FE_OPER, CO_TIPO_DOCU, NU_DOCU_BANC, TI_MOVI_BANC, IM_MOVI, DE_OBSE)  
      Values( SUBSTRING(@CSDE_LINE_CURS,1,2),    SUBSTRING(@CSDE_LINE_CURS,3,4),  
              SUBSTRING(@CSDE_LINE_CURS,7,2),    SUBSTRING(@CSDE_LINE_CURS,9,3),  
              SUBSTRING(@CSDE_LINE_CURS,12,20),  SUBSTRING(@CSDE_LINE_CURS,32,4),   
              SUBSTRING(@CSDE_LINE_CURS,36,2),   SUBSTRING(@CSDE_LINE_CURS,38,10),  
              SUBSTRING(@CSDE_LINE_CURS,48,3),   SUBSTRING(@CSDE_LINE_CURS,51,15),  
              SUBSTRING(@CSDE_LINE_CURS,66,1),   SUBSTRING(@CSDE_LINE_CURS,67,16),  
    RTRIM(LTRIM(SUBSTRING(@CSDE_LINE_CURS,83,LEN(@CSDE_LINE_CURS)))))  
  
  
      Fetch  CU_TDCONC_BANC_I01_1 into @CSDE_LINE_CURS  
    End  
    close CU_TDCONC_BANC_I01_1  
    deallocate CU_TDCONC_BANC_I01_1  
  
    Select   @VNCA_TOTA = 0  
    Select   @VNCA_ERRO = 0  
    Select   @VNNU_FILA = 0  
  
    Declare CU_TDCONC_BANC_I01_2 Cursor For  
  
    Select  T1.CO_EMPR, T1.NU_ANNO, T1.NU_PERI, T1.CO_BANC, LTRIM(RTRIM(T1.NU_CNTA_BANC)),  T1.AA_BNCO, T1.MM_BNCO,  
            T1.FE_OPER, T1.CO_TIPO_DOCU, T1.NU_DOCU_BANC, T1.TI_MOVI_BANC, T1.IM_MOVI, T2.CO_SUNA, T1.DE_OBSE  
    From    #TWMOVI_BANC T1  
  Left Outer Join TTDOCU_CNTB T2 On     
   ( T1.CO_TIPO_DOCU = T2.TI_DOCU )  
  
    Open   CU_TDCONC_BANC_I01_2  
    Fetch  CU_TDCONC_BANC_I01_2 into   
           @CSCO_EMPR_BANC,  @CSNU_ANNO_CONC,  @CSNU_PERI_CONC,  @CSCO_BANC,  
           @CSNU_CNTA_BANC,  @CSAA_BNCO,       @CSMM_BNCO,       @CSFE_OPER,   
           @CSCO_TIPO_DOCU,  @CSNU_DOCU_BANC,  @CSTI_MOVI_BANC,  @CSIM_MOVI, @CSCO_SUNA, @CSDE_OBSE  
  
    Select @VSNU_CNTA_ANTE = @CSNU_CNTA_BANC  
  
    While @@Fetch_Status = 0    
    Begin   
  
        Select  @VSDE_LINE_0001 =  @CSCO_EMPR_BANC+@CSNU_ANNO_CONC+@CSNU_PERI_CONC+  
                @CSCO_BANC+@CSNU_CNTA_BANC+@CSAA_BNCO+@CSMM_BNCO+@CSFE_OPER+  
                @CSCO_TIPO_DOCU+@CSNU_DOCU_BANC+@CSTI_MOVI_BANC+@CSIM_MOVI  
  
        Select   @VNCA_TOTA = @VNCA_TOTA + 1  
  
        If  @CSNU_PERI_CONC < '01'  or @CSNU_PERI_CONC > '12'  
        Begin  
           Select @VNCA_ERRO = @VNCA_ERRO + 1  
           Select @VSDE_OBSE_ERRO = 'PERIODO DE CONCILIACION NO VALIDO'  
          
           Insert into #TWMOVI_ERRO  ( NU_LINE_ERRO, DE_LINE, DE_OBSE)  
  			  Values ( @VNCA_ERRO, @VSDE_LINE_0001, @VSDE_OBSE_ERRO)   
        End  
  
        Select  @VSTI_SITU = TI_SITU_CONC  
        From TMSABA_MENS  
        Where CO_EMPR = @ISCO_EMPR  
        and CO_BANC = @CSCO_BANC  
        and NU_CNTA_BANC = @CSNU_CNTA_BANC  
        and AA_BNCO = @CSAA_BNCO  
        and MM_BNCO = @CSMM_BNCO  
  
        If  @VSTI_SITU = 'CER'  
        Begin  
           Select @VNCA_ERRO = @VNCA_ERRO + 1  
           Select @VSDE_OBSE_ERRO = 'PERIODO CERRADO'  
          
           Insert into #TWMOVI_ERRO  ( NU_LINE_ERRO, DE_LINE, DE_OBSE)  
    Values ( @VNCA_ERRO, @VSDE_LINE_0001, @VSDE_OBSE_ERRO)   
        End  
  
 Select @VSCO_BANC = CO_BANC  
 From TTBANC_FINA  
 Where CO_BANC       = LTRIM(@CSCO_BANC)  
 And     ST_BANC_EMPR  = 'S'  
  
        If  DATALENGTH(LTRIM(RTRIM(ISNULL(@VSCO_BANC,'')))) = 0  
        Begin  
           Select @VNCA_ERRO = @VNCA_ERRO + 1  
           Select @VSDE_OBSE_ERRO = 'CODIGO BANCO NO EXISTE'  
          
           Insert into #TWMOVI_ERRO  ( NU_LINE_ERRO, DE_LINE, DE_OBSE)  
    Values ( @VNCA_ERRO, @VSDE_LINE_0001, @VSDE_OBSE_ERRO)   
        End  
  
        Select  @VSNU_CNTA_BANC = NU_CNTA_BANC, @VSTI_SITU = TI_SITU  
        From    TMCNTA_BANC  
        Where   CO_EMPR      = @CSCO_EMPR_BANC  
        And     CO_BANC      = LTRIM(@CSCO_BANC)  
        And     NU_CNTA_BANC = LTRIM(@CSNU_CNTA_BANC)  
        And Exists  (Select  CO_USUA  From  TTUSER_CNBA  
                     Where   CO_EMPR       = @CSCO_EMPR_BANC  
                     And     CO_BANC       = LTRIM(@CSCO_BANC)  
                     And     NU_CNTA_BANC  = LTRIM(@CSNU_CNTA_BANC)  
                     And     CO_USUA       = @ISCO_USUA  
                     And     ST_MANT_INEG  = 'S')  
  
----  select @CSCO_BANC, @CSNU_CNTA_BANC, @ISCO_USUA    
        If  DATALENGTH(LTRIM(RTRIM(ISNULL(@VSNU_CNTA_BANC,'')))) = 0  
        Begin  
            Select @VNCA_ERRO = @VNCA_ERRO + 1  
            Select @VSDE_OBSE_ERRO = 'USUARIO NO AUTORIZADO O CUENTA NO EXISTE'   
  
            If @VSTI_SITU = 'ANU'  
              Select @VSDE_OBSE_ERRO = 'CUENTA ESTA ANULADA'   
  
            Insert into #TWMOVI_ERRO ( NU_LINE_ERRO, DE_LINE, DE_OBSE)  
            Values ( @VNCA_ERRO, @VSDE_LINE_0001, @VSDE_OBSE_ERRO)    
        End  
  
 Select @VSTI_DOCU = TI_DOCU  
        From   TTDOCU_CNTB    
        Where  ST_BANC = 'S'   
        And    CO_SUNA = RTRIM(LTRIM(@CSCO_SUNA))  
  
If  DATALENGTH(LTRIM(RTRIM(ISNULL(@VSTI_DOCU,'')))) = 0  
        Begin  
           Select @VNCA_ERRO = @VNCA_ERRO + 1  
           Select @VSDE_OBSE_ERRO = 'DOCUMENTO NO EXISTE O FALTA SER HABILITADO'  
          
           Insert into #TWMOVI_ERRO  ( NU_LINE_ERRO, DE_LINE, DE_OBSE)  
    Values ( @VNCA_ERRO, @VSDE_LINE_0001, @VSDE_OBSE_ERRO)   
        End  
  
        If @CSTI_MOVI_BANC != 'I'  And @CSTI_MOVI_BANC != 'E'  
        Begin  
           Select @VNCA_ERRO = @VNCA_ERRO + 1  
           Select @VSDE_OBSE_ERRO = 'TIPO MOVIMIENTO NO EXISTE DEBE SER E / I'  
          
           Insert into #TWMOVI_ERRO  ( NU_LINE_ERRO, DE_LINE, DE_OBSE)  
    Values ( @VNCA_ERRO, @VSDE_LINE_0001, @VSDE_OBSE_ERRO)   
        End  
  
        Select @VSNU_CNTA_ACTU = @CSNU_CNTA_BANC  
  
        If @VSNU_CNTA_ANTE != @VSNU_CNTA_ACTU  
        Begin  
           Select @VSNU_CNTA_ANTE = @VSNU_CNTA_ACTU  
           Select @VNCA_ERRO = @VNCA_ERRO + 1  
           Select @VSDE_OBSE_ERRO = 'CUENTA BANCARIA DIFERENTE'  
          
           Insert into #TWMOVI_ERRO  ( NU_LINE_ERRO, DE_LINE, DE_OBSE)  
    Values ( @VNCA_ERRO, @VSDE_LINE_0001, @VSDE_OBSE_ERRO)   
        End  
  
 Select  @VNNU_CNTA_0001 = Count(ISNULL(NU_CNTA_BANC,0)) From #TWMOVI_BANC_0003  
        Where CO_EMPR      =  @CSCO_EMPR_BANC  
        And NU_ANNO      =  @CSNU_ANNO_CONC  
        And NU_PERI      =  @CSNU_PERI_CONC  
        And     CO_BANC      =  LTRIM(@CSCO_BANC)  
        And NU_CNTA_BANC =  LTRIM(@CSNU_CNTA_BANC)  
        And AA_BNCO      =  @CSAA_BNCO  
        And MM_BNCO      =  @CSMM_BNCO  
        And FE_OPER      =  @CSFE_OPER  
        And CO_TIPO_DOCU =  @CSCO_TIPO_DOCU  
        And NU_DOCU_BANC =  @CSNU_DOCU_BANC  
        And TI_MOVI_BANC =  @CSTI_MOVI_BANC  
        And IM_MOVI      =  @CSIM_MOVI   
  
        IF   @VNNU_CNTA_0001 > 0  
        Begin  
          Select @VNCA_ERRO = @VNCA_ERRO + 1  
          Select @VSDE_OBSE_ERRO = 'REGISTRO DUPLICADO EN EL goO'  
   
          Insert into #TWMOVI_ERRO ( NU_LINE_ERRO, DE_LINE, DE_OBSE)  
          Values ( @VNCA_ERRO, @VSDE_LINE_0001, @VSDE_OBSE_ERRO)          
        End  
  
        Else  
        Begin  
    
/*--*/  
         Insert into #TWMOVI_BANC_0003  
                (CO_EMPR, NU_ANNO, NU_PERI, CO_BANC, NU_CNTA_BANC, AA_BNCO, MM_BNCO,  
                 FE_OPER, CO_TIPO_DOCU, NU_DOCU_BANC, TI_MOVI_BANC, IM_MOVI, CO_SUNA, DE_OBSE)  
         Values( @CSCO_EMPR_BANC,  @CSNU_ANNO_CONC,  @CSNU_PERI_CONC,  @CSCO_BANC,  
                 @CSNU_CNTA_BANC,  @CSAA_BNCO,       @CSMM_BNCO,       @CSFE_OPER,   
                 @CSCO_TIPO_DOCU,  @CSNU_DOCU_BANC,  @CSTI_MOVI_BANC,  @CSIM_MOVI, @CSCO_SUNA, @CSDE_OBSE)  
        End  
      Fetch  CU_TDCONC_BANC_I01_2 into   
             @CSCO_EMPR_BANC,  @CSNU_ANNO_CONC,  @CSNU_PERI_CONC,  @CSCO_BANC,  
             @CSNU_CNTA_BANC,  @CSAA_BNCO,       @CSMM_BNCO,       @CSFE_OPER,   
             @CSCO_TIPO_DOCU,  @CSNU_DOCU_BANC,  @CSTI_MOVI_BANC,  @CSIM_MOVI, @CSCO_SUNA, @CSDE_OBSE  
  
    End  
    
    close CU_TDCONC_BANC_I01_2  
    Deallocate CU_TDCONC_BANC_I01_2  
  
    Select  @VNCA_ERRO  
  
 Return  
/*-----------------------------------Fin-----------------------------------*/


GO
